package org.jim.server.adapter;

import org.jim.core.ImChannelContext;
import org.jim.core.packets.Command;
import org.jim.core.packets.Message;
import org.tio.core.ChannelContext;
/**
 * 消息格式转换器接口
 */
public interface MessageConverter<T extends Message> {

    /**
     * 判断当前转换器是否支持该消息格式
     * @param body 原始消息字节数组
     * @return 是否支持
     */
    boolean supports(byte[] body);

    /**
     * 将原始消息转换为标准Message对象
     * @param body 原始消息字节数组
     * @param channelContext 通道上下文
     * @return 转换后的Message对象
     */
    T convert(byte[] body, ImChannelContext channelContext);

    /**
     * 获取转换器的指令
     * @return
     */
    Command getCmd();
    /**
     * 设置转换器的指令
     * @param cmd
     */
    void setCmd(Command cmd);
}
